home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1998 January / Macworld (1998-01).dmg / Games World / Game Utilities / TexRay Workbench 1.0 / TexRay Workbench Guidelines < prev    next >
Text File  |  1997-06-08  |  19KB  |  308 lines

  1. Overview
  2.  
  3. Welcome to the world of creating Marathon textures using Bryce!  What
  4. follows is kind of a "brain dump" of things I've discovered while creating
  5. such textures.  Please send me comments regarding these various thoughts, and
  6. of course send me any of your own.  I will add them to this document as I
  7. receive them, and also try to organize this information a bit more coherantly
  8. when I have a better idea of how to do so.
  9.  
  10. Send comments to:
  11.         (Tim Thomas) thomas@urbana.css.mot.com
  12.  
  13. Note that the techniques described here can be applied to any game that uses
  14. texture mapping.  If you end up using Bryce to raytrace textures for Marathon
  15. or any other game, please drop me a line.  I'd be interested in how far this
  16. stuff goes!  Happy texturing! :-)
  17.  
  18. Tips on Object Sizes and Placement
  19.  
  20. The templates I've created place a block at the center of the coordinate system that
  21. is 20.48 by 20.48 units square (x and z axis, respectively.  You will note that this is the
  22. unit size for a Brycean object.  This was done deliberately so that the various Bryce
  23. shortcuts would work well with the block and other objects placed in the scene.  I suggest
  24. you study the various Bryce shortcuts for moving objects around.  They will really make it
  25. much much easier to place things in your scene.
  26.  
  27. Now, let's talk about Marathon texture sizes and how they relate to Bryce units.  The final
  28. texture is going to be 128x128 pixels square.  The camera in my templates is focused on
  29. a block 20.48x20.48 units square.  What that means is one pixel in the scene is .16 units
  30. square (20.48 / 128).  What that  means is if you make an object smaller than that you won't
  31. see much. :-)
  32.  
  33. Now let's say you want to make a cylindrical object placed lengthwise on your texture.
  34. Cylindrical objects are, well, round. :-)   That means that when you render the object
  35. the pixels across the diameter will be various shades of whatever color you've picked for the 
  36. object.  However, each ramp in a Marathon color map usually has 14 colors in it, so the
  37. cross-section of your cylinder will have at most around 14 colors.  14 x .16 = 2.25.  If you
  38. make your cylinder have a diameter significantly larger than 2.25 units you will end up with 
  39. nasty banding when the cylinder is rendered.  And of course the same guidelines apply to
  40. spheres.  Squashing a cylinder (or sphere) can give you a bit of leeway, since the
  41. center part of the object will be rendered with roughly the same color.  The bottom line is,
  42. large gently sloping parts of a texture will turn into stairsteps when rendered, so don't
  43. do that. :-)
  44.  
  45. To AntiAlias or Not to AntiAlias
  46.  
  47. When rendering textures in Bryce you will need to decide whether to antialias
  48. a texture.  If you antialias the texture then it will tend to look more realistic.
  49. However, it will also tend to look blurrier.  If you don't antialias then the
  50. edges will appear sharper; however, objects in the texture may also appear more
  51. blocky.
  52.  
  53. My solution is to always antialias in Bryce.  However, this results in an
  54. especially blurry line at sharp transitions between light and dark parts of the
  55. texture.  So in Photoshop I clean up these transitions using the clone tool, with
  56. the brush set to a single pixel.  The burn tool may also be useful for this but I
  57. haven't tried it yet.
  58.  
  59. As a final comment on this subject, if you are using the pure blue color to
  60. represent transparent parts of your texture then you will need to make sure
  61. you select all parts of the texture in  Photoshop with that bluish color (since
  62. Bryce will no doubt hue shift some of the blue pixels) and fill them with the
  63. pure blue color.  Otherwise the transparent areas will have a bluish "halo"
  64. around them.
  65.  
  66. Making Sharp Lines and Distinct Small Objects
  67.  
  68. Unfortunately I don't think you can make sharp lines and distinct small objects in a
  69. 128x128 texture using Bryce.  If you antialias then of course lines and small objects will
  70. appear blurry.  However, even if you don't the lines and small objects will still likely be
  71. blurry because of the way raytracing engines (like Bryce) work.
  72.  
  73. Bryce casts a ray from the camera through a pixel onto your scene.  Unless the ray
  74. exactly strikes the edge of your object, Bryce will average the values on either side of
  75. the edge of the object, thus creating a blurry, indistinct edge.  This is not a problem
  76. at high resolutions.  However, sorry folks, but we are dealing with 128x128 textures,
  77. and that quite frankly is a pretty rough resolution as far as raytracing goes.  To be sure,
  78. the texture will look fine far away and even probably at medium range -- if you have a
  79. full range of colors to choose from.  However, we are also dealing with a rather limited
  80. color map, with more-or-less 14 colors on any particular color ramp.
  81.  
  82. The solution is to post process the texture in Photoshop for instance.  The clone tool set
  83. to use a single pixel brush works wonders.  As I  mentioned elsewhere the burn
  84. tool may also be useful.
  85.  
  86. Let's say you want to clean up a horizontal edge.  Select the clone tool and option click
  87. a couple pixels above the edge to set the clone tool's start point.  Just below this start
  88. point, just next to the edge, click and drag along the edge.  You will in essence be duplicating
  89. the pixels along the edge.  This duplication seems to be all but invisible, but you will find
  90. that the edge is now very distinct.
  91.  
  92. And of course let's say you have an edge that needs to be a solid color, like the edge of a
  93. screen for instance.  You can always use the draw tool set to a single pixel, option click on
  94. an appropriate color on the edge, and drag along the edge.  The burn tool could also be used
  95. to produce a similar effect.
  96.  
  97. Specular Highlights
  98.  
  99. The Bungie Marathon textures tend to have very bright specular highlights.
  100. That is, the parts of the texture that are angled toward the light tend to be
  101. very bright compared to the parts of the texture that are flat.  Until recently
  102. I found it difficult to produce a similar effect using Bryce, due to the fact that
  103. I was setting the diffusion value for the lights used in the scene to a high level.
  104. The solution of course is, "Don't do that." :-)
  105.  
  106. So with that in mind, in order to produce a texture with bright specular highlights on the
  107. edges of the various objects in the scene, you need to bevel the edges of your objects and
  108. then turn up the specular highlights slider in the Materials editor.  You can also try turning
  109. up the reflectivity slider a bit.
  110.  
  111. To bevel the edges of your objects, you can either create a gray map in
  112. Photoshop with the edges of the light areas blurred, and then read in the gray
  113. map as a terrain, or you can play with Bryce's primitives, for example
  114. intersecting two square bars with one rotated 45°.
  115.  
  116. Dark Edges in the Upper and Left Sides of a Texture
  117.  
  118. When rendering you may notice a single row of dark pixels on the upper and/or
  119. left side of the texture.  This is because the camera is positioned to have a
  120. field of view reaching the very edge of a unit square positioned at the center
  121. of the coordinate system.  If the edges of your texture are lower due to the
  122. way they are constructed (for example the main part of the texture is a terrain
  123. with beveled edges) then Bryce may "see" the black space outside of the unit
  124. square and render it accordingly.  The solution is to zoom the camera in a
  125. small distance (say about 14 units).
  126.  
  127. Creating Tileable Textures
  128.  
  129. Bryce is great at creating textures that don't repeat themselves.  Getting it to
  130. do the "lesser" job of creating repeatable textures however seems to be all
  131. but impossible.  One way to do this is to create a repeatable texture using some
  132. other program (like KPT Texture Explorer 2.1) and using it as a pict texture in
  133. Bryce.  The way I do it, however, is to create the non-repeating texture in
  134. Bryce and then in Photoshop use the clone tool to "fix" the non-matching edges
  135. of the texture after offsetting the texture 64 pixels in the horizontal and
  136. vertical directions using the offset filter (thus placing all of the edges of the
  137. texture in the middle of the texture).  Actually, I've found that after converting
  138. the texture to indexed color mode in Photoshop many of the edges look ok
  139. anyway without modification.  Go figure...
  140.  
  141. Converting Textures Into Indexed Color Mode
  142.  
  143. When you save a Bryce texture after rendering it, it will be saved in 32 bit
  144. RGB mode.  In order to use it properly in Marathon it must be converted to
  145. an Indexed Color Mode pict.  In Photoshop this is easy enough to do.  Just
  146. open the Indexed Color Mode dialog from the Mode menu, select custom... as
  147. the palette, at the Color Table dialog read in the appropriate Marathon color
  148. map (which you can create by exporting a color map from Anvil), and press ok.
  149.  
  150. At this point you can select the texture and copy it to the clipboard and from
  151. there load it into Anvil.  However, if you want to save the texture as an
  152. indexed color mode pict you must first delete the alpha channel Bryce places
  153. in the texture (to indicate how far it got in the render) and then save the texture.
  154. Otherwise Photoshop will not let you save the texture as an indexed color mode
  155. pict.  Alternatively you can select Save a Copy... from the File menu.
  156.  
  157. As a final comment on this subject note that there appears to be a bug in how
  158. Anvil handles a texture in a format other than indexed color mode, even if all the
  159. colors in the texture are in the proper color palette.  Anvil will insist on
  160. sometimes dithering some colors.  Therefore it is wise to always use indexed
  161. color mode picts with Anvil, even when you are positive all of the colors in
  162. the pict are in the proper color palette.
  163.  
  164. Creating Textures with Colors in Marathon's Color Map(s)
  165.  
  166. Whoo boy!  This is the true tough problem using Bryce to create textures!
  167. Here's the problem:  You can set up a Bryce material so that all of the colors
  168. in the material are in the various Marathon color ramps, but when you render
  169. the texture you find that the colors are no longer on the color ramps!  There are
  170. two reasons for this:
  171. 1) Virtually all of the standard Marathon color ramps use fully saturated colors
  172.      with varying brightness levels and constant hue.  However, in Bryce (and
  173.      Photoshop for that matter) when you vary the brightness of a texture you
  174.      effect not only the brightness but also the saturation.  This is because the
  175.      color model they use simulates real world conditions in which this is the
  176.      case.  Think of it this way:  As you shine an increasingly bright light on an
  177.      object it will get brighter and brighter and more and more saturated.
  178.      However, at some point the brightness will overwhelm the color of the
  179.      object such that it becomes less and less saturated until it completely
  180.      whites out.
  181. 2) Bryce goes one step further and apparently models what is called the
  182.     Bezold-Brucke Effect (see page 8 of Color and the Computer by H. John
  183.     Durrett, Academic Press, Inc., 1987, ISBN 0-12-225210-1).  What this
  184.     means is that, when the brightness of an object changes, the hue physically
  185.     does not change (that is, the wavelength of light does not change -- just
  186.     the magnitude of the waves); however,  the human perception  of the hue
  187.    does  change.  Furthermore the hue shift is not consistent across the
  188.     spectrum -- some colors shift one way and others the other way as the
  189.     brightness changes.  In addition, 3 colors (pure blue, pure green, and
  190.     pure yellow) demonstrate no  change as the brightness changes.
  191.  
  192.     I have not verified that Bryce truely implements this effect.  However, of one
  193.     thing I am certain: Bryce is shifting the hues depending on brightness.  I
  194.     also know that Photoshop shifts the hue around when you change saturation
  195.     and lightness so it may also be implementing this effect to some degree.
  196.  
  197. The end result is that after rendering a Bryce texture you can end up with
  198. colors all over the color map which is not  what you want.
  199.  
  200. So how do we fix this?  Well, definitely try to start will colors in a Material
  201. that are the brightest (and lightest) of the colors in a Marathon color ramp.
  202. Also, try to start with fully saturated colors.  Render the image and then
  203. pull the resulting pict into Photoshop.  Now the fun begins...
  204.  
  205. In Photoshop use the Color Range... dialog in the Select menu.  Set the
  206. Fuzziness really low (say 4 for instance). Set the eyedropper to + so that
  207. successive mouse clicks add colors to the selected color mask.  Now start
  208. clicking and dragging the mouse over the areas of your texture that you want
  209. to adjust the colors.  When you are happy with the selection mask press ok.
  210.  
  211. Now, under the Image menu->Adjust submenu select Hue/Saturation... to
  212. adjust the hue and saturation of the colors in the selection. In the
  213. Hue/Saturation dialog adjust the Saturation and Lightness sliders. 
  214. Move the mouse over the area selected in your texture and look at the RGB/HSB
  215. values displayed in the Info dialog to see how your changes to Saturation
  216. and Lightness are effecting the Hue, Saturation, and Brightness of the colors
  217. in the selected area.  It is helpful to load the Marathon color
  218. map you are trying to use with the texture into the Swatches dialog. If you
  219. do this then you can also move the mouse over the various color swatches to
  220. compare their values to those used by your texture to see how close they are
  221. to each other.
  222.  
  223. I have found that with sufficient patience you can  get many if not most of
  224. the selected colors back onto the ramps of your selected Marathon color map.
  225. This is a bit of a pain, but it works.  Usually you will find you need to max out
  226. the Saturation slider and then reduce the Lightness slider.  Again you will notice
  227. as you play around with the Saturation and Lightness sliders that the Hue,
  228. Saturation, and Brightness of the colors in your texture all interact with each
  229. other.  Fun fun fun. :-/
  230.  
  231. Removing Unwanted Brightness Changes So Textures Tile Better
  232.  
  233. If you render a Bryce texture, bring it into Photoshop, and convert the colors to
  234. those in a Marathon color map, you will likely find the texture is brighter in the
  235. upper part of the texture and darker in the lower part (especially if you use the
  236. template I've created).  The reason is because, if you are using lighting similar
  237. to what I use in my template, you will have a large light (or two) shining down
  238. onto the texture at an angle from above.  Since the light is shining at an angle
  239. you will run into the light inverse square law, where the brightness of the light
  240. drops off as the square of the distance.
  241.  
  242. Although this dropoff is slight for such small textures, it is significant enough
  243. to cause headaches when you convert the texture to use a Marathon color map.
  244. Remember:  Marathon color map ramps have a rather limited number of colors.
  245. You can end up with shifts large enough to jump 3 colors in a ramp from the top
  246. to bottom of your texture.  This can be quite ugly, especially when you tile the
  247. texture.
  248.  
  249. The solution is to factor out the inverse square law from your texture.  Note that
  250. if you are using point sources for lights then you can ignore this problem since,
  251. well, you are going to have drastic changes in lighting anyway if the lights are
  252. close enough, and that is probably what you want.  But if you are using large
  253. parallel lights like I do in my template you will want to factor out the light
  254. changes.
  255.  
  256. I have created an adjustment pict in the templates directory to do this.  To use it,
  257. read it into Photoshop and convert it to Lab color mode and select the lightness
  258. channel.  Now read in your rendered texture.  Convert your rendered texture to Lab
  259. mode as well and also select the lightness channel.  Next select Apply Image... from
  260. the Image menu.  Set the Source to be the adjustment pict and the Blending mode
  261. to Add and press ok.
  262.  
  263. Note that this adjustment pict only works with the template I've created.  If you change
  264. the lighting in the template or make own lighting then you will need to create your own
  265. adjustment pict.  Here's how to do it:  Set up the lighting in your Bryce scenario file as
  266. you want it, and place a default gray object in your scene at the center of the coordinate
  267. system which is large enough to completely fill the rendered image.  Nor render the
  268. texture.  It should of course appear completely gray, with slightly varying brightness
  269. levels as dictated by your lighting. Now bring this rendered gray texture into Photoshop.
  270. Invert the texture.  Now select the Histogram... entry from the Image menu and note the 
  271. lowest gray value that has any pixels in your texture.  Now set the foreground color to be
  272. this lowest gray value (just set the RGB values to the gray value for example).  Next
  273. select Fill... from the Edit menu, set the dialog to use the foreground color and set the
  274. Mode to Difference and press ok.  You have now created an adjustment pict.  Save this
  275. pict and use it whenever you use that particular lighting setup.
  276.  
  277. Dealing with the Mysterious Black Line Down the Center of the Texture
  278.  
  279. You may render a texture and discover this nasty pitch black line running vertically straight
  280. through the center of your texture.  At the Antialiasing phase the line may gray out a bit, but
  281. nonetheless it's there.  This appears to be a bug in Bryce.  If you group a terrain object with
  282. some other object, to cut a hole  in the terrain for instance by setting the other object to
  283. negative, Bryce will render the black vertical line.
  284.  
  285. Fortunately the solution is very simple.  Change the camera setup so that the camera is
  286. rotated 360° around the Z axis.  No kidding. :-)  Strange as it sounds, doing that reduces the
  287. nasty black line to a single black pixel in the center of the texture (which is grayed out
  288. during the Antialiasing phase).
  289.  
  290. Dealing with Mysteriously Disappearing Objects and Corrupted Scene Files
  291.  
  292. I sincerely hope you never ever ever  have to deal with this problem, so please read the
  293. following carefully.  It will save you a great deal of grief, heartache and pain.
  294.  
  295. If you create a material that has a 2d pict as one of the textures, never ever ever save that
  296. material in the materials list.  If you do and subsequently use it, then Bryce will make it look
  297. like the scene is fine.  But as soon as you close and reopen the scene file you will find some
  298. of the objects not present in your scene at all, and there will be at least one object in the
  299. scene that is corrupted -- it will be grayed out and you won't be able to explicitly select it.
  300. Furthermore, if you try to be clever and delete all selectable objects and then use select all
  301. to select the grayed out object and then try to look at its attributes or family you will find
  302. either bogus values or Bryce will crash your machine.
  303.  
  304. This is obviously a bug in Bryce.  Beware of it.  I lost two nice textures because of this, with
  305. several machine crashes in the process.   Since I finally figured out the cause I need to let
  306. MetaTools know about the problem.  In the mean time, quite frankly really really watch out
  307. whenever you use 2d picts as textures in a Material.  I suggest saving backups of your texture
  308. frequently so that if you introduce corruption you can at least back up and fix the problem.